The use of object-oriented programming languages, such as C++, SMALLTALK™, JAVA™, and OBJECT PASCAL™, has allowed system designers and programmers to significantly increase the design flexibility and performance of business applications in electronic commerce environments. Object-oriented programming languages allow programmers to define the data type of a data structure, and the types of operations that can be applied to the data structure. As a result, the data structure becomes an “object”, which is a self-contained entity including both data and procedures (e.g., code) to manipulate the data.
A business object is an object that is modeled from a business concept, such as, for example, a business person, place, event, or process. As such, business objects can be created to represent actual business entities, such as products, purchase orders, invoices, payments, customers, suppliers, employees, etc. Business objects are scalable and can be used in various configurations and at multiple levels. By taking advantage of object-oriented technologies, business objects can be used to develop and customize business applications.
A relational database is a database organized as a collection of tables. Each table includes a set of columns and rows. The tables in a relational database can be related to each other by using the same value in a link field (e.g., referred to as a key field or foreign key field). Business objects (e.g., Purchase Orders, Advance Shipping Notices, Invoices, etc.) are hierarchical in nature. For example, a typical Purchase Order contains multiple line items, and each of the line items contains multiple schedules. Furthermore, each of the schedules contains a request, which in turn, can contain multiple promises. Consequently, when a hierarchical object (e.g., Purchase Order) is retrieved from a relational database, all of this information stored in the related tables has to be retrieved.
For example, using a typical Business-to-Business (B2B) collaborative software application, a user may login to the application and enter a search request for all Purchase Orders that were created within a certain date range. The results of such a search may not be scalable (e.g., deployable in various configurations from one-tier to n-tiers) if all of the Purchase Orders identified by the search are retrieved and displayed to the user, because the number of Purchase Orders retrieved can be very large (e.g., hundreds), and the Purchase Orders themselves can include a large amount of information. Consequently, in typical multi-user environments operating under heavy load conditions, the existing techniques used to retrieve hierarchical business objects can excessively stress the database servers, systems and networks involved. Accordingly, a pressing need exists for a retrieval technique that can retrieve hierarchical data from a relational database and is significantly more efficient than previous retrieval techniques.